/**
 * 自增自减运算符
 *   前缀自增，自减
 *   后缀自增，自减
 * 
 * 最佳实践
 *   优先使用前缀版本，因为它们性能更高并且不太可能引起意外。
 * 
 */

#include <iostream>

int add(int x, int y)
{
    return x + y;
}

int main()
{
    int x { 5 };
    int value{ add(x, ++x) }; // undefined behavior: is this 5 + 6, or 6 + 6?
    // It depends on what order your compiler evaluates the function arguments in

    std::cout << value << '\n'; // value could be 11 or 12, depending on how the above line evaluates!


    // 避免这种写法 结果可能不会一致
    std::cout << x + ++x << "\n";

    return 0;
}